Dette spørsmålet har allerede svar her: Snu en streng i Python (29 svar) Stengt for 4 år siden. Jeg prøver å snu en streng og bruker koden nedenfor, men den resulterende omvendte listeverdien er Ingen. Koden: str_a = 'Dette er rørt' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = ''. bli med (rev_word) Den returnerer TypeError. Hvorfor?
2021-01-15 08:11:14
.reverse () returnerer Ingen. Derfor bør du ikke tildele den til en variabel. Bruk dette i stedet: stra = 'Dette er en streng' revword = stra.split () revword.reverse () revword = ''. bli med (revword) Jeg har kjørt koden på IDEOne for deg slik at du kan se utdataene. (Legg også merke til at utdataene er stringaisDette; det kan være lurt å bruke '' .join (revword), med et mellomrom, i stedet.) Vær også oppmerksom på at metoden du har oppgitt bare reverserer ordene, ikke teksten. @ ron.rothman ga en lenke som beskriver hvordan du snur en streng i sin helhet. | Dette er min personlige favorittmåte å reversere en streng: stra = "Dette er en streng" revword = stra [:: - 1] print (revword) # "gnirts a si sihT eller, hvis du vil reversere ordrekkefølgen: revword = "" .join (stra.split () [:: - 1]) print (revword) # "streng a er dette" :) | Ulike reverseringer på en streng: instring = 'Dette er en streng' reversert streng = instring [:: - 1] print reversedstring # gnirts a si sihT wordsreversed = '' .føy til (ord [:: - 1] for ord i instring.split ()) skriv ord omvendt # sihT si a gnirts revwordorder = '' .join (ord for ord i instring.split () [:: - 1]) print revwordorder # string a er Dette revwordandorder = '' .føy til (ord [:: - 1] for ord i instring.split () [:: - 1]) skriv ut revordordorder # gnirts a si sihT | For fremtidig referanse når et objekt har en metode som [] .omvendt () utfører det vanligvis den handlingen på objektet (dvs. listen er sortert og returnerer ingenting, Ingen) i motsetning til innebygde funksjoner som sortert som utfører en handling på et objekt og returnerer en verdi (dvs. den sorterte listen) | >>> s = 'dette er en streng' >>> s [:: - 1] 'gnirts a si siht' >>> ''. bli med (reversert (er)) 'gnirts a si siht' | For loop gjentar strengen fra slutten (siste bokstav) til start (første bokstav) >>> s = 'Du kan også prøve dette:]' >>> rev = '' >>> for i innen rekkevidde (len (s) - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | Basert på kommentarer og andre svar: str_a = 'dette er en streng' rev_word = ''. join (reversert (str_a.split ())) Metodekjetting fungerer tross alt i Python ... | List revers kan gjøres på mer enn én måte. Som nevnt i forrige svar er to veldig fremtredende, en med revers () -funksjon og to med snittfunksjon. Jeg gir litt innsikt i hvilken vi bør foretrekke. Vi bør alltid bruke revers () -funksjonen for å reversere en Python-liste. To grunner, en reversering på stedet og to raskere enn andre. Jeg har noen tall som støtter svaret mitt, I [15]: len (l) Ut [15]: 1000 I [16]:% timeit -n1 l.revers () 1 sløyfer, best av 3: 7,87 µs per sløyfe I [17]:% timeit -n1 l [:: - 1] 1 sløyfer, best av 3: 10 µs per sløyfe For 1000 heltalliste, fungerte revers () -funksjonen bedre sammenlignet med kutting. | Er ikke svaret du leter etter? Bla gjennom andre spørsmål merket python eller still ditt eget spørsmål.